#pragma once
#include <QWidget>
#include <QVector>
#include <QColor>
#include "../core/SortStats.h"

/* 预设 12 线程颜色（亮&易区分） */
static constexpr int COLOR_COUNT = 12;
static const QColor kThreadColors[COLOR_COUNT] =
{
    QColor("#e6194B"), QColor("#3cb44b"), QColor("#ffe119"), QColor("#4363d8"),
    QColor("#f58231"), QColor("#911eb4"), QColor("#46f0f0"), QColor("#f032e6"),
    QColor("#bcf60c"), QColor("#fabebe"), QColor("#008080"), QColor("#e6beff")
};

class BarWidget : public QWidget {
    Q_OBJECT

public:
    explicit BarWidget(QWidget *parent = nullptr);

    /* 三参版本 —— 与 SortThread::frameReady 对齐 */
    void setData(const QVector<uint32_t> &values,
                 const QVector<int> &tag,
                 const SortStats &stats);

signals:
    void barClicked(int index);

protected:
    void paintEvent(QPaintEvent *) override;

    void wheelEvent(QWheelEvent *) override;

    void mousePressEvent(QMouseEvent *) override;

    void mouseMoveEvent(QMouseEvent *) override;

private:
    QVector<uint32_t> m_vals; // 当前值
    QVector<int> m_tag; // 每条所在线程 id(-1 表示无色)
    SortStats m_stats{}; // 统计

    /* 视图控制 */
    double m_scaleY = 1.0; // 垂直缩放
    bool m_autoScale = true; // 自动随最大值缩放
    int m_offset = 0; // 水平平移（像素）
    QPoint m_lastPos;
};
